In [1]:
import scipy.stats as ss

In [2]:
%matplotlib inline

Example with n x 1 data


In [23]:
np.random.random((10000,5))


Out[23]:
array([[ 0.71705892,  0.14338901,  0.55216855,  0.16642784,  0.27656289],
       [ 0.10572914,  0.49014827,  0.56487726,  0.14602259,  0.14897216],
       [ 0.80110396,  0.39537675,  0.12272142,  0.39572787,  0.20174706],
       ..., 
       [ 0.79984014,  0.99240982,  0.42382351,  0.23441801,  0.70807181],
       [ 0.41059782,  0.45930933,  0.25596535,  0.23151271,  0.71220148],
       [ 0.23132378,  0.75998546,  0.75783796,  0.56483733,  0.43935977]])

In [24]:
f = h5py.File('/tmp/blah.h5', 'w')

d = f.create_dataset('chr1', (10000,5), compression='gzip')
d[:] = np.random.random((10000,5))
f.close()

In [59]:
## create some input data
import matplotlib.pyplot as plt
import scipy.stats as ss

array_length = 10000

xs = range(array_length)
array_data = [ss.norm.pdf(i, array_length/2, array_length/5) for i in xs]
plt.plot(xs, array_data)


Out[59]:
[<matplotlib.lines.Line2D at 0x110631278>]

In [277]:
import h5py 
import math
import os
import os.path as op
import numpy as np

def create_multires(array_data, chromsizes, 
                    agg, starting_resolution=1,
                    tile_size=1024, output_file='/tmp/my_file.multires'):
    '''
    Create a multires file containing the array data
    aggregated at multiple resolutions.
    
    Parameters
    ----------
    array_data: {'chrom_key': np.array, }
        The array data to aggregate organized by chromosome
    chromsizes: [('chrom_key', size),...]
    agg: lambda
        The function that will aggregate the data. Should
        take an array as input and create another array of
        roughly half the length
    starting_resolution: int (default 1)
        The starting resolution of the input data
    tile_size: int
        The tile size that we want higlass to use. This should
        depend on the size of the data but when in doubt, just use
        256.
    '''
    filename = output_file

    # this is just so we can run this code
    # multiple times without h5py complaining
    if op.exists(filename):
        os.remove(filename)

    # this will be the file that contains our multires data
    f = h5py.File(filename, 'w')
        
    # store some metadata
    f.create_group('info')
    f['info'].attrs['tile-size'] = tile_size
    
    f.create_group('resolutions')
    f.create_group('chroms')

    # start with a resolution of 1 element per pixel
    curr_resolution = starting_resolution

    # this will be our sample highest-resolution array
    # and it will be stored under the resolutions['1']
    # dataset
    f['resolutions'].create_group(str(curr_resolution))

    chroms = [c[0] for c in chromsizes]
    lengths = np.array([c[1] for c in chromsizes])
    chrom_array = np.array(chroms, dtype='S')
    
    # add the chromosome information
    f['resolutions'][str(curr_resolution)].create_group('chroms')
    f['resolutions'][str(curr_resolution)].create_group('values')
    f['resolutions'][str(curr_resolution)]['chroms'].create_dataset('name', shape=(len(chroms),), dtype=chrom_array.dtype, data=chrom_array)
    f['resolutions'][str(curr_resolution)]['chroms'].create_dataset('length', shape=(len(chroms),), data=lengths)

    f['chroms'].create_dataset('name', shape=(len(chroms),), dtype=chrom_array.dtype, data=chrom_array)
    f['chroms'].create_dataset('length', shape=(len(chroms),), data=lengths)

    # add the data
    for chrom,length in chromsizes:
        f['resolutions'][str(curr_resolution)]['values'].create_dataset(str(chrom), array_data[chrom].shape)
        print("array_data.shape", array_data[chrom].shape)
        f['resolutions'][str(curr_resolution)]['values'][chrom][:] = array_data[chrom]    # see above section
        

    # the maximum zoom level corresponds to the number of aggregations
    # that need to be performed so that the entire extent of
    # the dataset fits into one tile
    total_length = sum([c[1] for c in chromsizes])
    max_zoom = math.ceil(math.log(total_length / (tile_size * starting_resolution) ) / math.log(2))
    print("max_zoom:", max_zoom)
    
    # we're going to go through and create the data for the different
    # zoom levels by summing adjacent data points
    prev_resolution = curr_resolution

    for i in range(max_zoom):
        # each subsequent zoom level will have half as much data
        # as the previous
        curr_resolution = prev_resolution * 2
        f['resolutions'].create_group(str(curr_resolution))
        f['resolutions'][str(curr_resolution)].create_group('chroms')
        f['resolutions'][str(curr_resolution)].create_group('values')
        f['resolutions'][str(curr_resolution)]['chroms'].create_dataset('name', shape=(len(chroms),), dtype=chrom_array.dtype, data=chrom_array)
        f['resolutions'][str(curr_resolution)]['chroms'].create_dataset('length', shape=(len(chroms),), data=lengths)


        for chrom,length in chromsizes:
            next_level_length = math.ceil(
                len(f['resolutions'][str(prev_resolution)]['values'][chrom]) / 2)

            old_data = f['resolutions'][str(prev_resolution)]['values'][chrom][:]
            #print("prev_resolution:", prev_resolution)
            #print("old_data.shape", old_data.shape)

            # this is a sort of roundabout way of calculating the 
            # shape of the aggregated array, but all its doing is
            # just halving the first dimension of the previous shape
            # without taking into account the other dimensions
            new_shape = list(old_data.shape)
            new_shape[0] = math.ceil(new_shape[0] / 2)
            new_shape = tuple(new_shape)

            f['resolutions'][str(curr_resolution)]['values'].create_dataset(chrom, 
                                            new_shape)

            #print("11 old_data.shape", old_data.shape)
            if len(old_data) % 2 != 0:
                # we need our array to have an even number of elements
                # so we just add the last element again
                old_data = np.concatenate((old_data, [old_data[-1]]))
            #print("22 old_data.shape", old_data.shape)

            #print('old_data:', old_data)
            #print("shape:", old_data.shape)
            # actually sum the adjacent elements
            #print("old_data.shape", old_data.shape)
            new_data = agg(old_data)

            '''
            print("zoom_level:", max_zoom - 1 - i, 
                  "resolution:", curr_resolution, 
                  "new_data length", len(new_data))
            '''
            f['resolutions'][str(curr_resolution)]['values'][chrom][:] = new_data

        prev_resolution = curr_resolution
    return f

chromsizes = [('a', 10), ('b', 8), ('c', 5)]
counter = 0
chrom_data = {}

for chrom,length in chromsizes:
    array_data = counter + np.array(range(length))
    array_length = len(array_data)
    #chrom_data[chrom] = np.array([array_data, array_data * 2]).T
    chrom_data[chrom] = array_data
    counter += array_length

    
chrom_lengths = [c[1] for c in chromsizes]

f = create_multires(chrom_data, 
                    chromsizes,
                    lambda x: x.T.reshape((-1,2)).sum(axis=1).T,
                    #lambda x: x.T.reshape((x.shape[1],-1,2)).sum(axis=2).T,
                   tile_size=2)

print(f['resolutions']['1']['values']['a'][:])
print(f['resolutions']['2']['values']['a'][:])
print(f['resolutions']['4']['values']['a'][:])


array_data.shape (10,)
array_data.shape (8,)
array_data.shape (5,)
max_zoom: 4
[ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9.]
[  1.   5.   9.  13.  17.]
[  6.  22.  34.]

In [186]:
def abs2genomic(chromsizes, start_pos, end_pos):
    '''
    Convert absolute genomic sizes to genomic
    
    Parameters:
    -----------
    chromsizes: [1000,...]
        An array of the lengths of the chromosomes
    start_pos: int
        The starting genomic position
    end_pos: int
        The ending genomic position
    '''
    abs_chrom_offsets = np.r_[0, np.cumsum(chromsizes)]
    cid_lo, cid_hi = np.searchsorted(abs_chrom_offsets,
                                   [start_pos, end_pos],
                                   side='right') - 1
    rel_pos_lo = start_pos - abs_chrom_offsets[cid_lo]
    rel_pos_hi = end_pos - abs_chrom_offsets[cid_hi]
    start = rel_pos_lo
    for cid in range(cid_lo, cid_hi):
      yield cid, start, chromsizes[cid]
      start = 0
    yield cid_hi, start, rel_pos_hi

In [190]:
def get_tileset_info(f):
    '''
    Return some information about this tileset that will
    help render it in on the client.
    
    Parameters
    ----------
    f: h5py.File
        The f for which we're returning tileset info
    
    Returns
    -------
    tileset_info: {}
        A dictionary containing the information describing
        this dataset
    '''
    # a sorted list of resolutions, lowest to highest
    # awkward to write because a the numbers representing resolution
    # are datapoints / pixel so lower resolution is actually a higher
    # number
    resolutions = sorted([int(r) for r in f['resolutions'].keys()])[::-1]
    
    # the "leftmost" datapoint position
    # an array because higlass can display multi-dimensional
    # data
    min_pos = [0]
    
    # the "rightmost" datapoint position
    max_pos = [len(f['resolutions'][str(resolutions[-1])])]
    tile_size = f['info'].attrs['tile-size']
    
    return {
        'resolutions': resolutions,
        'min_pos': min_pos, 
        'tile_size': tile_size
    }

In [191]:
print(get_tileset_info(f))


{'resolutions': [16, 8, 4, 2, 1], 'min_pos': [0], 'tile_size': 2}

In [201]:
def get_tile(vals, chromsizes, resolution, start_pos, end_pos):
    '''
    Get the tile value given the start and end positions and
    chromosome positions. 
    
    Drop bins at the ends of chromosomes if those bins aren't
    full.
    
    Parameters:
    -----------
    vals: [...]
        An array of values for each bin along the genome
    chromsizes: [int]
        The sizes of the chromosomes in the order in which
        they should be displayed.
    resolution: int
        The size of each bin, except for the last bin in each
        chromosome.
    start_pos: int
        The start_position of the interval to return
    end_pos: int
        The end position of the interval to return
        
    Returns
    -------
    return_vals: [...]
        A subset of the original genome-wide values containing
        the values for the portion of the genome that is visible.
    '''
    binsize = resolution

    arrays = []
    for cid, start, end in abs2genomic([c[1] for c in chromsizes], start_pos, end_pos):
        n_bins = int(np.ceil((end - start) / binsize))
        print("cid:", cid, 'n_bins:', n_bins)
        
        try:
            chrom = chromsizes[cid][0]
            clen = chromsizes[cid][1]

            start_pos = start // binsize
            end_pos = end // binsize + 1
            
            x = f['resolutions'][str(resolution)]['values'][chrom][start_pos:end_pos]
            print("x:", x)

            # drop the very last bin if it is smaller than the binsize
            if len(x) > 1 and end == clen and clen % binsize != 0:
                print("dropping")
                x = x[:-1]
        except IndexError:
            # beyond the range of the available chromosomes
            # probably means we've requested a range of absolute
            # coordinates that stretch beyond the end of the genome
            x = np.zeros(n_bins)

        arrays.append(x)

    return np.concatenate(arrays)

get_tile(f, chromsizes, 4, 0, 23)


cid: 0 n_bins: 3
x: [  6.  22.  34.]
dropping
cid: 1 n_bins: 2
x: [ 46.  62.]
cid: 2 n_bins: 2
x: [ 78.  88.]
dropping
cid: 3 n_bins: 0
Out[201]:
array([  6.,  22.,  46.,  62.,  78.])

In [5]:
def load_chromsizes(chromInfoFile):
    '''
    Load a set of chromosome sizes from a file. They should
    be of the format:
    
    chr \t size
    '''
    with open(chromInfoFile, 'r') as f1:
        chroms = []
        lengths = []
        for line in f1:
            parts = line.strip().split('\t')

            #print(parts)
            chroms += [parts[0]]
            lengths += [int(parts[1])]

        chromsizes = list(zip(chroms, lengths))
        return chromsizes

Re-create our multi-vec data with chromosome names


In [12]:
import h5py
import math
import numpy as np
import os
import os.path as op

chromInfoFile = op.expanduser('~/projects/negspy/negspy/data/hg38/chromInfo.txt')
filename = op.expanduser('~/Dropbox/paper-data/meyer-data/my_file_genome_wide_hg38_v2.multires')
out_file = op.splitext(filename)[0] + ".multivec"

f_in = h5py.File(filename, 'r')

if op.exists(out_file):
    os.remove(out_file)

f_out = h5py.File(out_file, 'w')

chromsizes = load_chromsizes(chromInfoFile)
data_positions = np.r_[0, np.cumsum([c[1] for c in chromsizes])]
data_positions = np.array([math.ceil(d / 1000) for d in data_positions])
print('dp', len(data_positions))

print('chromsizes', [c[0] for c in chromsizes[:24]])
print('data_positions', data_positions[-1])
print('len', len(f_in['resolutions']['1000']))

count = 0
for i,(chrom,length) in enumerate(chromsizes[:24]):
    shape = f_in['resolutions']['1000'].shape
    data_length = math.ceil(length / 1000)
    print("chrom:", chrom, "data_length:", data_length)
    print("shape:", shape)

    f_out.create_dataset(chrom, (data_length,shape[1]), compression='gzip')
    f_out[chrom][:] = f_in['resolutions']['1000'][count:count+data_length]
    count += data_length
f_out.close()


dp 456
chromsizes ['chr1', 'chr2', 'chr3', 'chr4', 'chr5', 'chr6', 'chr7', 'chr8', 'chr9', 'chr10', 'chr11', 'chr12', 'chr13', 'chr14', 'chr15', 'chr16', 'chr17', 'chr18', 'chr19', 'chr20', 'chr21', 'chr22', 'chrX', 'chrY']
data_positions 3209287
len 3209513
chrom: chr1 data_length: 248957
shape: (3209513, 250)
chrom: chr2 data_length: 242194
shape: (3209513, 250)
chrom: chr3 data_length: 198296
shape: (3209513, 250)
chrom: chr4 data_length: 190215
shape: (3209513, 250)
chrom: chr5 data_length: 181539
shape: (3209513, 250)
chrom: chr6 data_length: 170806
shape: (3209513, 250)
chrom: chr7 data_length: 159346
shape: (3209513, 250)
chrom: chr8 data_length: 145139
shape: (3209513, 250)
chrom: chr9 data_length: 138395
shape: (3209513, 250)
chrom: chr10 data_length: 133798
shape: (3209513, 250)
chrom: chr11 data_length: 135087
shape: (3209513, 250)
chrom: chr12 data_length: 133276
shape: (3209513, 250)
chrom: chr13 data_length: 114365
shape: (3209513, 250)
chrom: chr14 data_length: 107044
shape: (3209513, 250)
chrom: chr15 data_length: 101992
shape: (3209513, 250)
chrom: chr16 data_length: 90339
shape: (3209513, 250)
chrom: chr17 data_length: 83258
shape: (3209513, 250)
chrom: chr18 data_length: 80374
shape: (3209513, 250)
chrom: chr19 data_length: 58618
shape: (3209513, 250)
chrom: chr20 data_length: 64445
shape: (3209513, 250)
chrom: chr21 data_length: 46710
shape: (3209513, 250)
chrom: chr22 data_length: 50819
shape: (3209513, 250)
chrom: chrX data_length: 156041
shape: (3209513, 250)
chrom: chrY data_length: 57228
shape: (3209513, 250)

In [43]:
import pandas as pd

def add_row_infos(filename, row_infos_filename, force=False):
    '''
    Add row information to an HDF5 file
    
    Parameters
    ----------
    filename: h5py.File
        An input hdf5 file containing the multivec data
    row_info_file: string
        The filename of the file containing the row information
    '''
    f_h5 = h5py.File(filename, 'r+')

    with open(row_infos_filename, 'r') as f:
        row_infos = [l.strip().encode('utf8') for l in f.readlines()]
        
    if 'row_infos' in f_h5.attrs:
        if not force:
            print("row_infos already exist, use --force to override")
            return
        else:
            # delete the existing sample infos so that we can replace them with others
            del f_h5.attrs['row_infos']

    f_h5.attrs.create('row_infos', row_infos)
    
    #f_h5.attrs['row_infos'] = row_infos
    #print("row_infos", row_infos)
    f_h5.close()
    
    
row_infos_filename = '/Users/peter/Dropbox/paper-data/meyer-data/sample_info.txt'
filename = '/Users/peter/Dropbox/paper-data/meyer-data/my_file_genome_wide_hg38_v2.multivec'

add_row_infos(filename, row_infos_filename, force=True)

In [2]:
import h5py

filename = '/Users/peter/Dropbox/paper-data/meyer-data/my_file_genome_wide_hg38_v2.multivec'

print("filename:", filename)
f = h5py.File(filename, 'r')
print("f.attrs", list(f.attrs.keys()))
print("f.attrs[row_infos]", f.attrs['row_infos'][:])
f.close()


filename: /Users/peter/Dropbox/paper-data/meyer-data/my_file_genome_wide_hg38_v2.multivec
f.attrs ['sample_infos', 'row_infos']
f.attrs[row_infos] [ b'Homo sapiens\tHCT116-H3K27AC\tGSM1415876\tGSE58638\tHCT-116\tEpithelium\tColon\tanti-H3K27ac (Active Motif #39135)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tDKO1-H3K27AC\tGSM1415884\tGSE58638\tDKO1\tNone\tNone\tanti-H3K27ac (Active Motif #39135)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tENCODE3_H3K27ac\tENCSR435JKM_1\tENCSR435JKM\tA549\tEpithelium\tNone\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tBLUEPRINT_S00COJH1_H3K27AC\tGSM1406317\tGSE58310\tNone\tMacrophage\tBlood\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tIFTSEC33_H3K27AC_NA_REP2_1\tGSM1663027\tGSE68104\tFT33\tEpithelium\tFallopian tube secretory\tH3K27AC (ABCAM AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tPFEIFFER H3K27AC\tGSM1703923\tGSE69558\tPfeiffer\tB Lymphocyte\tLymph Node\tH3K27ac (39133, Active Motif)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tTOLEDO H3K27AC\tGSM1703931\tGSE69558\tToledo\tB Lymphocyte\tBlood\tH3K27ac (39133, Active Motif)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tTH1_K27AC_REP2\tGSM2048305\tGSE77299\tNone\tTh1\tTonsil\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC_CHIPSEQ_HUMAN_REP1\tGSM1375210\tGSE49624\tNone\tSpermatid\tNone\tACTIVE MOTIF\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC CHIP-SEQ IN A673 96HRS SHGFP\tGSM1517571\tGSE61944\tA673\tNone\tNone\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tEwing sarcoma'
 b'Homo sapiens\tCB2_H3K27AC\tGSM1523582\tGSE62246\tNone\tB Lymphocyte\tTonsil\tacetylated H3K27 (Abcam, catalog# ab4739, lot# GR144577-1)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tCB4_H3K27AC\tGSM1523589\tGSE62246\tNone\tB Lymphocyte\tTonsil\tacetylated H3K27 (Abcam, catalog# ab4739, lot# GR144577-1)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tILC1_K27AC_REP2\tGSM2048292\tGSE77299\tNone\tILC1\tTonsil\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tTH17_K27AC_REP2\tGSM2048310\tGSE77299\tNone\tTh17\tTonsil\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tENCODE3_H3K27ac\tENCSR449AXO_1\tENCSR449AXO\tNone\tNeural Progenitor Cell\tNone\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tReference Epigenome: ChIP-Seq Analysis of H3K27ac in iPS 6.9 Cells; renlab.H3K27ac.iPS-6.9.01.01\tGSM752967\tGSE16256\tiPS DF 6.9\tiPSC\tNone\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tH3K27AC_CHIPSEQ_HUMAN_REP2\tGSM1375211\tGSE49624\tNone\tSpermatid\tNone\tACTIVE MOTIF\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH82 H3K27AC\tGSM1526706\tGSE62412\tNCI-H82\tEpithelium\tLung\tab4729\tH3K27ac\thm\tSmall Cell Lung Carcinoma'
 b'Homo sapiens\tFL1_H3K27AC\tGSM1523532\tGSE62246\tNone\tB Lymphocyte\tLymph Node\tacetylated H3K27 (Abcam, catalog# ab4739, lot# GR144577-1)\tH3K27ac\thm\tLymphoma'
 b'Homo sapiens\tFL5_H3K27AC\tGSM1523544\tGSE62246\tNone\tB Lymphocyte\tLymph Node\tacetylated H3K27 (Abcam, catalog# ab4739, lot# GR144577-1)\tH3K27ac\thm\tLymphoma'
 b'Homo sapiens\tFL8_H3K27AC\tGSM1523550\tGSE62246\tNone\tB Lymphocyte\tLymph Node\tacetylated H3K27 (Abcam, catalog# ab4739, lot# GR144577-1)\tH3K27ac\thm\tLymphoma'
 b'Homo sapiens\tFL10_H3K27AC\tGSM1523556\tGSE62246\tNone\tB Lymphocyte\tLymph Node\tacetylated H3K27 (Abcam, catalog# ab4739, lot# GR144577-1)\tH3K27ac\thm\tLymphoma'
 b'Homo sapiens\tFL11_H3K27AC\tGSM1523559\tGSE62246\tNone\tB Lymphocyte\tLymph Node\tacetylated H3K27 (Abcam, catalog# ab4739, lot# GR144577-1)\tH3K27ac\thm\tLymphoma'
 b'Homo sapiens\tFL16_H3K27AC\tGSM1523571\tGSE62246\tNone\tB Lymphocyte\tLymph Node\tacetylated H3K27 (Abcam, catalog# ab4739, lot# GR144577-1)\tH3K27ac\thm\tLymphoma'
 b'Homo sapiens\tCB1_H3K27AC\tGSM1523578\tGSE62246\tNone\tB Lymphocyte\tTonsil\tacetylated H3K27 (Abcam, catalog# ab4739, lot# GR144577-1)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN SPLEEN TISSUE; RENLAB.H3K27AC.STL003SX.01.01\tGSM906398\tGSE16256\tNone\tNone\tSpleen\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN THYMUS TISSUE; RENLAB.H3K27AC.STL001TH.01.01\tGSM1013125\tGSE16256\tNone\tNone\tThymus\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN SPLEEN TISSUE; RENLAB.H3K27AC.STL001SX.01.01\tGSM1120338\tGSE16256\tNone\tNone\tSpleen\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tH3K27AC_CHIPSEQ_REP2_A\tGSM1057020\tGSE43036\tNone\tMonocyte\tBlood\tH3K27ac (Abcam ab-4729)\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tH3K27AC_CHIPSEQ_REP2_B\tGSM1057021\tGSE43036\tNone\tMonocyte\tBlood\tH3K27ac (Abcam ab-4729)\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tH3K27AC_CHIPSEQ_REP2_C\tGSM1057022\tGSE43036\tNone\tMonocyte\tBlood\tH3K27ac (Abcam ab-4729)\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tH3K27AC_CHIPSEQ_REP2_D\tGSM1057023\tGSE43036\tNone\tMonocyte\tBlood\tH3K27ac (Abcam ab-4729)\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tCD8 H3K27AC DONOR A\tGSM999000\tGSE40668\tNone\tT Lymphocyte\tBlood\tabcam, ab4729, GR45851-1\tH3K27ac\thm\tNone'
 b'Homo sapiens\tCD8 H3K27AC DONOR C\tGSM999001\tGSE40668\tNone\tT Lymphocyte\tBlood\tabcam, ab4729, GR45851-1\tH3K27ac\thm\tNone'
 b'Homo sapiens\tNK H3K27AC DONOR A\tGSM999008\tGSE40668\tNone\tNatural Killer Cell\tBlood\tabcam, ab4729, GR45851-1\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC_TREGRA+ D\tGSM1056941\tGSE43119\tNone\tT Lymphocyte\tBlood\tabcam, ab 4729\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC_TREGRA- D\tGSM1056949\tGSE43119\tNone\tT Lymphocyte\tBlood\tabcam, ab 4729\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC_TCONVRA- D\tGSM1056951\tGSE43119\tNone\tT Lymphocyte\tBlood\tabcam, ab 4729\tH3K27ac\thm\tNone'
 b'Homo sapiens\tMV411_H3K27AC_UNTREATED_17\tGSM1587925\tGSE65161\tMV4-11\tMonocyte\tNone\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tITREG_DMSO_H3K27AC\tGSM1816682\tGSE70709\tNone\tT Lymphocyte\tNone\tanti-H3K27ac (Abcam, catalog# ab4729, lot# GR132150-1)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC-A0\tGSM1816075\tGSE70660\tNone\tNone\tBone Marrow\tAbcam\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC-A5\tGSM1816076\tGSE70660\tNone\tErythroid Progenitor Cell\tBone Marrow\tAbcam\tH3K27ac\thm\tNone'
 b'Homo sapiens\tOCI-LY1_H3K27AC_CHIP-SEQ:SINT\tGSM898059\tGSE29282\tOCI-Ly1\tB Lymphocyte\tBone Marrow\tH3K27ac\tH3K27ac\thm\tDiffuse Large B-cell Lymphoma (DLBCL)'
 b'Homo sapiens\tOCI-LY1_H3K27AC_CHIP-SEQ:SIBCL6\tGSM898058\tGSE29282\tOCI-Ly1\tB Lymphocyte\tBone Marrow\tH3K27ac\tH3K27ac\thm\tDiffuse Large B-cell Lymphoma (DLBCL)'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN SPLEEN TISSUE; RENLAB.H3K27AC.STL002SX.01.01\tGSM1013132\tGSE16256\tNone\tNone\tSpleen\tActive Motif, 39133, 19208002\tH3K27ac\thm\tiron deficiency, bipolar'
 b'Homo sapiens\tH3K27AC_CHIPSEQ_REP1_C\tGSM1057018\tGSE43036\tNone\tMonocyte\tBlood\tH3K27ac (Abcam ab-4729)\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tH3K27AC_CHIPSEQ_REP1_D\tGSM1057019\tGSE43036\tNone\tMonocyte\tBlood\tH3K27ac (Abcam ab-4729)\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tH3K27AC CD14+CD16- DONOR A\tGSM995355\tGSE40502\tNone\tMonocyte\tBlood\tabcam, ab4729, GR45851-1\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tH3K27AC CD14+CD16- DONOR D\tGSM995356\tGSE40502\tNone\tMonocyte\tBlood\tabcam, ab4729, GR45851-1\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tH3K27AC CD14DIMCD16+ DONOR D\tGSM995360\tGSE40502\tNone\tMonocyte\tBlood\tabcam, ab4729, GR45851-1\tH3K27ac\thm\tNone'
 b'Homo sapiens\tHUVEC_H3K27AC PPAR\xce\x92/\xce\x94AGONIST 24HR NORMOXIA REPLICATE 2\tGSM1214675\tGSE50144\tNone\tEndothelial Cell\tUmbilical Vein\tH3K27ac\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN RIGHT ATRIUM TISSUE; RENLAB.H3K27AC.STL003RA.01.01\tGSM910557\tGSE16256\tNone\tNone\tRight Atrium\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN AORTA TISSUE; RENLAB.H3K27AC.STL003AO.01.01\tGSM906392\tGSE16256\tNone\tNone\tAorta\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tH3K27AC NS CHIP SEQ\tGSM809015\tGSE32644\tNone\tEndothelial Cell\tUmbilical Vein\tH3K27ac\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tH3K27AC HOUR 1\tGSM1009624\tGSE41166\tNone\tEndothelial Cell\tUmbilical Vein\tab4729\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC HOUR 0\tGSM1009623\tGSE41166\tNone\tEndothelial Cell\tUmbilical Vein\tab4729\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC HOUR 12\tGSM1009626\tGSE41166\tNone\tEndothelial Cell\tUmbilical Vein\tab4729\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC HOUR 4\tGSM1009625\tGSE41166\tNone\tEndothelial Cell\tUmbilical Vein\tab4729\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN LEFT VENTRICLE TISSUE; RENLAB.H3K27AC.STL001LV.01.01\tGSM908951\tGSE16256\tNone\tNone\tLeft Ventricle\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tHUVEC_H3K27AC DMSO 24HR NORMOXIA REPLICATE 2\tGSM1214674\tGSE50144\tNone\tEndothelial Cell\tUmbilical Vein\tH3K27ac\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tHUVEC_H3K27AC DMSO 24HR HYPOXIA REPLICATE 2\tGSM1214676\tGSE50144\tNone\tEndothelial Cell\tUmbilical Vein\tH3K27ac\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tHUVEC_H3K27AC PPAR\xce\x92/\xce\x94AGONIST 24HR HYPOXIA REPLICATE 2\tGSM1214677\tGSE50144\tNone\tEndothelial Cell\tUmbilical Vein\tH3K27ac\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tHUVEC_H3K27AC PPAR\xce\x92/\xce\x94AGONIST 24HR NORMOXIA REPLICATE 1\tGSM1226370\tGSE50144\tNone\tEndothelial Cell\tUmbilical Vein\tH3K27ac\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tHUVEC_H3K27AC PPAR\xce\x92/\xce\x94AGONIST 24HR HYPOXIA REPLICATE 1\tGSM1226371\tGSE50144\tNone\tEndothelial Cell\tUmbilical Vein\tH3K27ac\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tH3K27AC_DMSO\tGSM1517089\tGSE61911\tHeLa\tEpithelium\tCervix\tH3K27ac (C15410196, Diagenode)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC_TA+TNF\xce\x91\tGSM1517090\tGSE61911\tHeLa\tEpithelium\tCervix\tH3K27ac (C15410196, Diagenode)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH358_K27AC_REP1\tGSM1635574\tGSE72002\tH358\tNone\tLung\tH3K27ac ab4729\tH3K27ac\thm\tLung Adenocarcinoma'
 b'Homo sapiens\t8PND_CHIP_H3K27AC\tGSM1663107\tGSE68109\tHT1080\tEpithelium\tConnective Tissue\tH3K27ac (Active Motif 39133)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC_E7DEL_2_USC660_CHIPSEQ\tGSM1866978\tGSE72631\tHCT116\tNone\tNone\tH3K27Ac, Active Motif #39133, lot# 21311004\tH3K27ac\thm\tColorectal cancer'
 b'Homo sapiens\tBICR31_K27AC\tGSM2080324\tGSE72002\tNone\tNone\tLung\tH3K27ac ab4729\tH3K27ac\thm\tCancer'
 b'Homo sapiens\tReference Epigenome: ChIP-Seq Analysis of H3K27ac in BMP4 Trophoblast Cells; renlab.H3K27ac.BMP4T.03.01\tGSM864800\tGSE16256\tH1\tEmbryonic Stem Cell\tEmbryo\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tHUVEC H3K27AC DMSO 24HR HYPOXIA\tGSM945520\tGSE38555\tNone\tEndothelial Cell\tUmbilical Vein\tH3K27ac\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN PSOAS MUSCLE TISSUE; RENLAB.H3K27AC.STL003PO.01.01\tGSM910556\tGSE16256\tNone\tNone\tPsoas Muscle\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN LEFT VENTRICLE TISSUE; RENLAB.H3K27AC.STL003LV.01.01\tGSM906396\tGSE16256\tNone\tNone\tLeft Ventricle\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN PSOAS MUSCLE TISSUE; RENLAB.H3K27AC.STL002PO.01.01\tGSM1013130\tGSE16256\tNone\tNone\tPsoas Muscle\tActive Motif, 39133, 19208002\tH3K27ac\thm\tiron deficiency, bipolar'
 b'Homo sapiens\tMUS_MUSCULUS - CEREBELLUM, H3K27AC CHIP\tGSM1119262\tGSE40465\tNone\tNone\tCerebellum\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tMUS_MUSCULUS - WHOLE BRAIN, H3K27AC CHIP\tGSM1119261\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tIMR5-75-SHMYCN-MYCN HIGH H3K27AC_CHIP_SEQ\tGSM2120713\tGSE80197\tH3K27ac\tNeuroblastoma\tNone\tab4729 (Abcam, Cambridge, UK)\tH3K27ac\thm\tNeuroblastoma'
 b'Homo sapiens\tNEC_H3K27ac\tGSM602302\tGSE24447\tNone\tNeuroectoderm\tNone\tH3K27ac\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tH3K27AC CHIP-SEQ IN A673 48HRS SHGFP\tGSM1517570\tGSE61944\tA673\tNone\tNone\tH3K27ac (Active Motif, 39133)\tH3K27ac\thm\tEwing sarcoma'
 b'Homo sapiens\tH3K27AC CHIP-SEQ IN A673 48HRS SHFLI1\tGSM1517573\tGSE61944\tA673\tNone\tNone\tH3K27ac (Active Motif, 39133)\tH3K27ac\thm\tEwing sarcoma'
 b'Homo sapiens\tH3K27AC MARKS OF PRIMED WIS2 ES STEM CELLS\tGSM1571913\tGSE52824\tWIS2\tEmbryonic Stem Cell\tNone\tanti-H3K27acetyl (ab4729, Abcam)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC_HUMAN3_REP4\tGSM1817161\tGSE70751\tNone\tNeural crest cell\tCranial\tanti-H3K27ac (Active Motif, catalog# 39133, lot# 01613007)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC DMSO BE(2)-C\tGSM2127461\tGSE80445\tH3K27ac\tNeuroblastoma\tNone\tab4729 (Abcam, Cambridge, UK)\tH3K27ac\thm\tNeuroblastoma'
 b'Homo sapiens\tH3K27AC DMSO IMR5-75\tGSM2127467\tGSE80445\tH3K27ac\tNeuroblastoma\tNone\tab4729 (Abcam, Cambridge, UK)\tH3K27ac\thm\tNeuroblastoma'
 b'Homo sapiens\tCHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN HUES64 CELLS; DNA_LIB 2069\tGSM997249\tGSE17312\tHUES64\tEmbryonic Stem Cell\tEmbryo\tActive Motif, 39133, 31610003\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tCHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN HUES64 DERIVED CD184+ CELLS; DNA_LIB 3188\tGSM1112831\tGSE17312\tHUES64\tEmbryonic Stem Cell\tEmbryo\tActive Motif, 39133, 31610003\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tRATTUS_NORVEGICUS - WHOLE BRAIN (16HR PMD), H3K27AC CHIP\tGSM1119259\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tRATTUS_NORVEGICUS - WHOLE BRAIN (24HR PMD), H3K27AC CHIP\tGSM1119260\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC CHIP-SEQ IN SKMNC 48HRS SHFLI1\tGSM1517554\tGSE61944\tSK-N-MC\tEpithelium\tBrain\tH3K27ac (Active Motif, 39133)\tH3K27ac\thm\tEwing sarcoma'
 b'Homo sapiens\tH3K27AC CHIP-SEQ IN SKMNC 96HRS SHFLI1\tGSM1517556\tGSE61944\tSK-N-MC\tEpithelium\tBrain\tH3K27ac (Active Motif, 39133)\tH3K27ac\thm\tEwing sarcoma'
 b'Homo sapiens\tH3K27AC CHIP-SEQ IN A673\tGSM1517563\tGSE61944\tA673\tNone\tNone\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tEwing sarcoma'
 b'Homo sapiens\tH3K27AC CHIP-SEQ IN A673 96HRS SHFLI1\tGSM1517574\tGSE61944\tA673\tNone\tNone\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tEwing sarcoma'
 b'Homo sapiens\tESC_REP2_H3K27AC\tGSM1521726\tGSE62193\tH9\tEmbryonic Stem Cell\tEmbryo\tNone\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tMRG_REP2_H3K27AC\tGSM1521755\tGSE62193\tNone\tNeural Progenitor Cell\tNone\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC MARKS OF NA\xc3\x8fVE WIS2 ES STEM CELLS\tGSM1571907\tGSE52824\tWIS2\tEmbryonic Stem Cell\tNone\tanti-H3K27acetyl (ab4729, Abcam)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC_CHIPSEQ-AZH\tGSM1498907\tGSE61176\tNone\tEmbryonic Stem Cell\tNone\tH3K27ac\tH3K27ac\thm\tNone'
 b'Homo sapiens\t24DD_TRA_POS_DOX_MINUS_H3K27ACE_REP1\tGSM1825778\tGSE71033\tNone\tIntermediate\tNone\tH3K27ac, Active Motif, 39133, #25812006\tH3K27ac\thm\tNone'
 b'Homo sapiens\t24DD_TRA_POS_DOX_PLUS_H3K27ACE_REP1\tGSM1825782\tGSE71033\tNone\tIntermediate\tNone\tH3K27ac, Active Motif, 39133, #25812006\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC_HUMAN1_REP1\tGSM1817151\tGSE70751\tNone\tNeural crest cell\tCranial\tanti-H3K27ac (Active Motif, catalog# 39133, lot# 01613007)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_8 - SUPERIOR TEMPORAL GYRUS (PLANUM POLARE), BRAIN1, H3K27AC CHIP\tGSM1119122\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_9 - SUBCENTRAL REGION, BRAIN1, H3K27AC CHIP\tGSM1119123\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_19 - POSTCENTRAL GYRUS, BRAIN1, H3K27AC CHIP\tGSM1119133\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_20 - ANTERIOR INSULAR CORTEX, BRAIN1, H3K27AC CHIP\tGSM1119134\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_21 - SUPERIOR TEMPORAL GYRUS (PLANUM TEMPORALE), BRAIN1, H3K27AC CHIP\tGSM1119135\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_22 - INFERIOR FRONTAL GYRUS (PARS TRIANGULARIS), BRAIN1, H3K27AC CHIP\tGSM1119136\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_23 - SUBSTANTIA NIGRA, BRAIN1, H3K27AC CHIP\tGSM1119137\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_24 - AMYGDALA, BRAIN1, H3K27AC CHIP\tGSM1119138\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_37 - ANGULAR GYRUS, BRAIN1, H3K27AC CHIP\tGSM1119151\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_46 - SUPRAMARGINAL GYRUS, BRAIN1, H3K27AC CHIP\tGSM1119160\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_52 - GYRUS RECTUS, BRAIN1, H3K27AC CHIP\tGSM1119166\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_57 - SEPTAL NUCLEI, BRAIN1, H3K27AC CHIP\tGSM1119169\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_60 - PIRIFORM CORTEX, BRAIN1, H3K27AC CHIP\tGSM1119172\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b"Homo sapiens\tREGION_4 - SUPERIOR TEMPORAL GYRUS (HESCHL'S GYRUS), BRAIN1, H3K27AC CHIP\tGSM1119119\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone"
 b'Homo sapiens\tREGION_6 - TEMPORAL POLE, BRAIN1, H3K27AC CHIP\tGSM1119120\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_7 - HIPPOCAMPUS, BRAIN1, H3K27AC CHIP\tGSM1119121\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_14 - ORBITAL GYRUS, BRAIN1, H3K27AC CHIP\tGSM1119128\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_25 - LATERAL OCCIPITAL GYRUS, BRAIN1, H3K27AC CHIP\tGSM1119139\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_26 - CAUDATE NUCLEUS (MEDIO SUPERIOR), BRAIN1, H3K27AC CHIP\tGSM1119140\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_28 - VENTRAL ANTERIOR THALAMIC NUCLEUS, BRAIN1, H3K27AC CHIP\tGSM1119142\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_33 - GENICULATE NUCLEUS, BRAIN1, H3K27AC CHIP\tGSM1119147\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_35 - RED NUCLEUS, BRAIN1, H3K27AC CHIP\tGSM1119149\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_39 - PRECUNEUS, BRAIN1, H3K27AC CHIP\tGSM1119153\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_41 - POST CENTRAL GYRUS, BRAIN1, H3K27AC CHIP\tGSM1119155\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREGION_43 - MIDDLE TEMPORAL GYRUS, BRAIN1, H3K27AC CHIP\tGSM1119157\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN ADRENAL GLAND TISSUE; RENLAB.H3K27AC.STL003AD.01.01\tGSM896163\tGSE16256\tNone\tNone\tAdrenal Gland\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN PANCREAS TISSUE; RENLAB.H3K27AC.STL003PA.01.01\tGSM906397\tGSE16256\tNone\tNone\tPancreas\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN LUNG TISSUE; RENLAB.H3K27AC.STL002LG.01.01\tGSM906395\tGSE16256\tNone\tEpithelium\tLung\tActive Motif, 39133, 19208002\tH3K27ac\thm\tiron deficiency, bipolar'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN ESOPHAGUS TISSUE; RENLAB.H3K27AC.STL003EG.01.01\tGSM906393\tGSE16256\tNone\tNone\tEsophagus\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN ADIPOSE TISSUE; RENLAB.H3K27AC.STL003FT.01.01\tGSM906394\tGSE16256\tNone\tNone\tAdipose\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN OVARY TISSUE; RENLAB.H3K27AC.STL002OV.01.01\tGSM956009\tGSE16256\tNone\tNone\tOvary\tActive Motif, 39133, 19208002\tH3K27ac\thm\tiron deficiency, bipolar'
 b'Homo sapiens\tREGION_63 - PITUITARY GLAND, BRAIN5, H3K27AC CHIP\tGSM1119251\tGSE40465\tNone\tCortex\tBrain\tH3K27AC (ABCAM, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tES_D0_H3K27AC_REP2\tGSM1316301\tGSE54471\tCyT49\tEmbryonic Stem Cell\tNone\tH3K27ac, Activemotif 39133\tH3K27ac\thm\tNone'
 b'Homo sapiens\tES_D10_H3K27AC_REP1\tGSM1316328\tGSE54471\tCyT49\tEmbryonic Stem Cell\tNone\tH3K27ac, Activemotif 39133\tH3K27ac\thm\tNone'
 b'Homo sapiens\tCHIPSEQ_GBM_2493_H3K27AC.FL154\tGSM1866060\tGSE72468\tNone\tNone\tBrain\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tCHIPSEQ_GBM_S08_H3K27AC.FL151\tGSM1866072\tGSE72468\tNone\tNone\tBrain\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tTUMOR B H3K27AC\tGSM2144753\tGSE81213\tNone\tNone\tendometrioid adenocarcinoma\tH3K27ac (39133; Active motif)\tH3K27ac\thm\tTumor'
 b'Homo sapiens\tReference Epigenome: ChIP-Seq Analysis of H3K27ac in BMP4 Mesendoderm Cells; renlab.H3K27ac.BMP4M.03.01\tGSM864035\tGSE16256\tH1\tEmbryonic Stem Cell\tEmbryo\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tReference Epigenome: ChIP-Seq Analysis of H3K27ac in BMP4 Mesendoderm Cells; renlab.H3K27ac.BMP4M.04.01\tGSM864799\tGSE16256\tH1\tEmbryonic Stem Cell\tEmbryo\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN SMALL BOWEL TISSUE; RENLAB.H3K27AC.STL001SB.01.01\tGSM915330\tGSE16256\tNone\tEpithelium\tSmall Intestine\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN SIGMOID COLON TISSUE; RENLAB.H3K27AC.STL003SG.01.01\tGSM910559\tGSE16256\tNone\tNone\tSigmoid Colon\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN NEURAL PROGENITOR CELLS; RENLAB.H3K27AC.NPC.05.01\tGSM956008\tGSE16256\tH1\tEmbryonic Stem Cell\tEmbryo\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN ESOPHAGUS TISSUE; RENLAB.H3K27AC.STL002EG.01.01\tGSM1013127\tGSE16256\tNone\tNone\tEsophagus\tActive Motif, 39133, 19208002\tH3K27ac\thm\tiron deficiency, bipolar'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN SMALL INTESTINE TISSUE; RENLAB.H3K27AC.STL002SB.01.01\tGSM1013131\tGSE16256\tNone\tEpithelium\tSmall Intestine\tActive Motif, 39133, 19208002\tH3K27ac\thm\tiron deficiency, bipolar'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN GASTRIC TISSUE; RENLAB.H3K27AC.STL002GA.01.01\tGSM1013128\tGSE16256\tNone\tNone\tStomach\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tREFERENCE EPIGENOME: CHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN BLADDER TISSUE; RENLAB.H3K27AC.STL003BL.01.01\tGSM1013133\tGSE16256\tNone\tNone\tUrinary Bladder\tActive Motif, 39133, 19208002\tH3K27ac\thm\tNormal'
 b'Homo sapiens\t48HR_H3K27AC_CHIPSEQ\tGSM1006721\tGSE41009\tH1\tEmbryonic Stem Cell\tEmbryo\tABCAM AB4729\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tCHG018\tGSM1252274\tGSE51776\tNone\tNone\tStomach\tH3K27ac\tH3K27ac\thm\tGastric Adenocarcinoma'
 b'Homo sapiens\tCHG022\tGSM1252278\tGSE51776\tNone\tNone\tStomach\tH3K27ac\tH3K27ac\thm\tNone'
 b'Homo sapiens\tCHG089\tGSM1252312\tGSE51776\tNone\tNone\tStomach\tH3K27ac\tH3K27ac\thm\tNone'
 b'Homo sapiens\tCHIP-SEQ OF 500 THOUSAND K562 CELLS WITH H3K27AC ANTIBODY - REPLICATE 1\tGSM1782738\tGSE70482\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tK562_H3K27AC\tGSM2054696\tGSE66023\tK562\tErythroblast\tBone Marrow\tH3K27ac (Abcam ab4729, GR254707-1)\tH3K27ac\thm\tErythroleukemic'
 b'Homo sapiens\tBERNSTEIN_K562_H3K27AC\tGSM733656\tGSE29611\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tChronic Myelogenous Leukemia'
 b'Homo sapiens\tK562_H3K27AC_REP1\tGSM646434\tGSE26320\tK562\tErythroblast\tBone Marrow\tABCAM, AB4729\tH3K27ac\thm\tChronic Myelogenous Leukemia'
 b'Homo sapiens\tCHIP-SEQ OF 10 MILLION K562 CELLS WITH H3K27AC ANTIBODY - REPLICATE 1\tGSM1782704\tGSE70482\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tK562_H3K27AC_REP2\tGSM646435\tGSE26320\tK562\tErythroblast\tBone Marrow\tABCAM, AB4729\tH3K27ac\thm\tChronic Myelogenous Leukemia'
 b'Homo sapiens\tK562_H3K27AC\tGSM1652918\tGSE63782\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-5_H3K27AC_AD_BC01_DMSO\tGSM1918425\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-5_H3K27AC_AD_BC02_C646\tGSM1918426\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-5_H3K27AC_AD_BC03_GSK126\tGSM1918427\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-8_H3K27AC_AD_BC01_DMSO\tGSM1918444\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-8_H3K27AC_AD_BC02_C646\tGSM1918445\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-8_H3K27AC_AD_BC03_GSK126\tGSM1918446\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-8_H3K27AC_AD_BC05_DMSO\tGSM1918447\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-8_H3K27AC_AD_BC06_C646\tGSM1918448\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-8_H3K27AC_AD_BC07_GSK126\tGSM1918449\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-8_H3K27AC_AD_BC09_DMSO\tGSM1918450\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-8_H3K27AC_AD_BC10_C646\tGSM1918451\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-8_H3K27AC_AD_BC11_GSK126\tGSM1918452\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-9_H3K27AC_AD_BC01_DMSO\tGSM1918471\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-9_H3K27AC_AD_BC02_C646\tGSM1918472\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-9_H3K27AC_AD_BC03_GSK126\tGSM1918473\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-9_H3K27AC_AD_BC05_DMSO\tGSM1918474\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-9_H3K27AC_AD_BC06_C646\tGSM1918475\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tEXP004-9_H3K27AC_AD_BC07_GSK126\tGSM1918476\tGSE74359\tK562\tErythroblast\tBone Marrow\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC CHIP-SEQ FOR GM18505\tGSM1164223\tGSE47991\tGM18505\tLymphoblastoid\tBlood\tABCAM, AB4729\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tH3K27AC CHIP-SEQ FOR GM18516\tGSM1164226\tGSE47991\tGM18516\tLymphoblastoid\tBlood\tABCAM, AB4729\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC CHIP-SEQ FOR GM19204\tGSM1164230\tGSE47991\tGM19204\tLymphoblastoid\tBlood\tABCAM, AB4729\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC CHIP-SEQ FOR GM19239\tGSM1164232\tGSE47991\tGM19239\tLymphoblastoid\tBlood\tABCAM, AB4729\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC CHIP-SEQ FOR GM18522\tGSM1164227\tGSE47991\tGM18522\tLymphoblastoid\tBlood\tABCAM, AB4729\tH3K27ac\thm\tNone'
 b'Homo sapiens\tGM18853 H3K27AC\tGSM1420876\tGSE58852\tGM18853\tLymphoblastoid\tNone\tAbcam, AB4729, 730178\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC CHIP-SEQ FOR GM18507\tGSM1164224\tGSE47991\tGM18507\tLymphoblastoid\tBlood\tABCAM, AB4729\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tH3K27AC CHIP-SEQ FOR GM18508\tGSM1164225\tGSE47991\tGM18508\tLymphoblastoid\tBlood\tABCAM, AB4729\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC CHIP-SEQ FOR GM19141\tGSM1164228\tGSE47991\tGM19141\tLymphoblastoid\tBlood\tABCAM, AB4729\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC CHIP-SEQ FOR GM19193\tGSM1164229\tGSE47991\tGM19193\tLymphoblastoid\tBlood\tABCAM, AB4729\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tH3K27AC CHIP-SEQ FOR GM19238\tGSM1164231\tGSE47991\tGM19238\tLymphoblastoid\tBlood\tABCAM, AB4729\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tGM12878-37C-H3K27AC-ROBOTIC-SL46215\tGSM1333956\tGSE53366\tGM12878\tLymphoblastoid\tBlood\tNone\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tGM12878-H3K27AC-REP1-MANUAL-SL45088\tGSM1333973\tGSE53366\tGM12878\tLymphoblastoid\tBlood\tNone\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tGM12878-H3K27AC-REP2-MANUAL-SL45089\tGSM1333975\tGSE53366\tGM12878\tLymphoblastoid\tBlood\tNone\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tGM12878-H3K27AC-REP3-ROBOTIC-SL46199\tGSM1333978\tGSE53366\tGM12878\tLymphoblastoid\tBlood\tNone\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tGM12878-H3K27AC-REP4-ROBOTIC-SL46200\tGSM1333980\tGSE53366\tGM12878\tLymphoblastoid\tBlood\tNone\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tGM18516 H3K27AC\tGSM1420871\tGSE58852\tGM18516\tLymphoblastoid\tBlood\tAbcam, AB4729, 730178\tH3K27ac\thm\tNone'
 b'Homo sapiens\tGM18517 H3K27AC\tGSM1420872\tGSE58852\tGM18517\tLymphoblastoid\tNone\tAbcam, AB4729, 730178\tH3K27ac\thm\tNone'
 b'Homo sapiens\tGM18522 H3K27AC\tGSM1420873\tGSE58852\tGM18522\tLymphoblastoid\tBlood\tAbcam, AB4729, 730178\tH3K27ac\thm\tNone'
 b'Homo sapiens\tGM18523 H3K27AC\tGSM1420874\tGSE58852\tNone\tLymphoblastoid\tNone\tAbcam, AB4729, 730178\tH3K27ac\thm\tNone'
 b'Homo sapiens\tGM18852 H3K27AC\tGSM1420875\tGSE58852\tGM18852\tLymphoblastoid\tNone\tAbcam, AB4729, 730178\tH3K27ac\thm\tNone'
 b'Homo sapiens\tGM12878_K27AC_10K_REP2\tGSM1599156\tGSE65516\tGM12878\tLymphoblastoid\tBlood\tH3K27ac (Abcam, catalog# ab4729, lot# GR183919-1)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC_CHIPSEQ\tGSM1874105\tGSE72886\tGM12878\tLymphoblastoid\tBlood\tH3K27ac (Abcam ab4729, Lot: 509313)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tGM12878-H3K27AC-REP1-ROBOTIC-SL46197\tGSM1333974\tGSE53366\tGM12878\tLymphoblastoid\tBlood\tNone\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tGM12878-H3K27AC-REP2-ROBOTIC-SL46198\tGSM1333976\tGSE53366\tGM12878\tLymphoblastoid\tBlood\tNone\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tID01.H3K27AC\tGSM2046837\tGSE77260\tNone\tMesenchymal Stem Cell\tUmbilical Cord\tH3K27ac (2ug Abcam, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tID56.H3K27AC\tGSM2046838\tGSE77260\tNone\tMesenchymal Stem Cell\tUmbilical Cord\tH3K27ac (2ug Abcam, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tID75.H3K27AC\tGSM2046839\tGSE77260\tNone\tMesenchymal Stem Cell\tUmbilical Cord\tH3K27ac (2ug Abcam, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tNHLF_H3K27AC_REP1\tGSM646476\tGSE26320\tNHLF\tFibroblast\tLung\tABCAM, AB4729\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tBERNSTEIN_HSMMTUBE_H3K27AC\tGSM733666\tGSE29611\tNone\tMyoblast\tSkeletal Muscle\tNone\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tBERNSTEIN_OSTEOBL_H3K27AC\tGSM733739\tGSE29611\tNone\tOsteoblast\tBone\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tMOCK_H3K27AC_CHIP-SEQ\tGSM1442703\tGSE59693\tIMR90\tFibroblast\tLung\tanti-H3K27ac (custom antibody from the laboratory of Michael Grunstein)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tID44.H3K27AC\tGSM2046840\tGSE77260\tNone\tMesenchymal Stem Cell\tUmbilical Cord\tH3K27ac (2ug Abcam, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tID57.H3K27AC\tGSM2046841\tGSE77260\tNone\tMesenchymal Stem Cell\tUmbilical Cord\tH3K27ac (2ug Abcam, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tID60.H3K27AC\tGSM2046842\tGSE77260\tNone\tMesenchymal Stem Cell\tUmbilical Cord\tH3K27ac (2ug Abcam, AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC CHIP-SEQ_PROLIFERATING IMR90 REPLICATE\tGSM2098176\tGSE74328\tIMR90\tFibroblast\tLung\tH3K27ac (ab4729; Abcam)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC CHIP-SEQ_ETOPOSIDE IMR90\tGSM2098186\tGSE74328\tIMR90\tFibroblast\tLung\tH3K27ac (ab4729; Abcam)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tReference Epigenome: ChIP-Seq Analysis of H3K27ac in IMR90 Cells; renlab.H3K27ac.IMR90-01.02\tGSM469967\tGSE16256\tIMR90\tFibroblast\tLung\tAbcam, Ab4729, 454269\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tReference Epigenome: ChIP-Seq Analysis of H3K27ac in IMR90 Cells; renlab.H3K27ac.IMR90-01.01\tGSM469966\tGSE16256\tIMR90\tFibroblast\tLung\tAbcam, Ab4729, 454269\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tHSMM_H3K27AC_REP1\tGSM646394\tGSE26320\tNone\tMyoblast\tSkeletal Muscle\tABCAM, AB4729\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tCHIP-SEQ ANALYSIS OF H3K27AC IN HUMAN BM-MSC CELLS; DNA_LIB 996\tGSM1112792\tGSE17312\tNone\tMesenchymal Stem Cell\tBone Marrow\tActive Motif, 39133, 31610003\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tBERNSTEIN_NH-A_H3K27AC\tGSM733763\tGSE29611\tNone\tAstrocyte\tBrain\tNone\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tBERNSTEIN_NHLF_H3K27AC\tGSM733646\tGSE29611\tNHLF\tFibroblast\tLung\tNone\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tH3K27AC_CHIP-SEQ REP2\tGSM1513892\tGSE61793\tNone\tStromal Cell\tNone\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tIOSE11_H3K27AC_NA_REP1_1\tGSM1663035\tGSE68104\tIOE11\tEpithelium\tOvary\tH3K27AC (ABCAM AB4729)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC CHIP-SEQ_PROLIFERATING IMR90\tGSM1915113\tGSE74328\tIMR90\tFibroblast\tLung\tH3K27ac (ab4729; Abcam)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC HFFS\tGSM2066623\tGSE78096\tHFF\tFibroblast\tForeskin\tH3K27ac (Millipore, catalog# 17-683, lot# 2510209)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC D6\tGSM2066624\tGSE78096\tNone\tFibroblast\tForeskin\tH3K27ac (Millipore, catalog# 17-683, lot# 2510209)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC CHIP-SEQ_QUIESCENT IMR90 REPLICATE\tGSM2098177\tGSE74328\tIMR90\tFibroblast\tLung\tH3K27ac (ab4729; Abcam)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC CHIP-SEQ_SENESCENT IMR90 REPLICATE\tGSM2098178\tGSE74328\tIMR90\tFibroblast\tLung\tH3K27ac (ab4729; Abcam)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tMCF7_H3K27AC_CHIP-SEQ\tGSM1383859\tGSE57498\tMCF-7\tEpithelium\tMammary Gland\tH3K27Ac (#39297, Active Motif)\tH3K27ac\thm\tBreast cancer'
 b'Homo sapiens\tMCF7_PARENTAL_H3K27AC_CHIP\tGSM2029579\tGSE76637\tZR-75-30\tNone\tNone\tMillipore, 07-360\tH3K27ac\thm\tNone'
 b'Homo sapiens\tSINT_H3K27AC_E2_R1\tGSM986077\tGSE40129\tMCF-7\tEpithelium\tMammary Gland\tAbcam\tH3K27ac\thm\tBreast cancer'
 b'Homo sapiens\tSIGATA_H3K27AC_VEH_R1\tGSM986080\tGSE40129\tMCF-7\tEpithelium\tMammary Gland\tAbcam\tH3K27ac\thm\tBreast cancer'
 b'Homo sapiens\tSIGATA_H3K27AC_E2_R1\tGSM986078\tGSE40129\tMCF-7\tEpithelium\tMammary Gland\tAbcam\tH3K27ac\thm\tBreast cancer'
 b'Homo sapiens\tUSC_CHIPSEQ_MCF-7_H3K27AC_UCDAVIS\tGSM945854\tGSE31755\tMCF-7\tEpithelium\tMammary Gland\tNone\tH3K27ac\thm\tBreast cancer'
 b'Homo sapiens\tH3K27AC MCF7T\tGSM1481571\tGSE60517\tMCF-7\tEpithelium\tMammary Gland\tH3K27ac (ab4729 abcam lot GR132150)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC MCF7F\tGSM1481572\tGSE60517\tMCF-7\tEpithelium\tMammary Gland\tH3K27ac (ab4729 abcam lot GR132150)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC LTED\tGSM1481573\tGSE60517\tLTED\tNone\tNone\tH3K27ac (ab4729 abcam lot GR132150)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC LTEDT\tGSM1481574\tGSE60517\tLTED\tNone\tNone\tH3K27ac (ab4729 abcam lot GR132150)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC LTEDF\tGSM1481575\tGSE60517\tLTED\tNone\tNone\tH3K27ac (ab4729 abcam lot GR132150)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tMCF7_NS_H3K27AC\tGSM2036927\tGSE76732\tMCF7\tNone\tNone\tH3K27ac (Abcam, catalog# ab4729, lot# GR155970-2)\tH3K27ac\thm\tNormal'
 b'Homo sapiens\tMCF7_PMA_H3K27AC\tGSM2036928\tGSE76732\tMCF7\tNone\tNone\tH3K27ac (Abcam, catalog# ab4729, lot# GR155970-2)\tH3K27ac\thm\tNone'
 b'Homo sapiens\tENCODE3_H3K27ac\tENCSR752UOD_1\tENCSR752UOD\tMCF-7\tEpithelium\tNone\tNone\tH3K27ac\thm\tNone'
 b'Homo sapiens\tSINT_H3K27AC_VEH_R1\tGSM986079\tGSE40129\tMCF-7\tEpithelium\tMammary Gland\tAbcam\tH3K27ac\thm\tBreast cancer'
 b'Homo sapiens\tZR-75-1 H3K27AC [LAB: ZHAO-DFCI]\tGSM1589472\tGSE69107\tZR-75-1\tEpithelium\tMammary Gland\tAbcam, ab4729, GR183922-1\tH3K27ac\thm\tCancer'
 b'Homo sapiens\tT47D H3K27AC [LAB: ZHAO-DFCI]\tGSM1589474\tGSE69107\tT47D\tEpithelium\tMammary Gland\tAbcam, ab4729, GR183922-1\tH3K27ac\thm\tCancer'
 b'Homo sapiens\tMCF7_CHIPSEQ_H3K27AC\tGSM1693017\tGSE69112\tMCF-7\tEpithelium\tMammary Gland\tNone\tH3K27ac\thm\tCancer'
 b'Homo sapiens\tT47D_CHIPSEQ_H3K27AC\tGSM1693025\tGSE69112\tT47D\tEpithelium\tMammary Gland\tNone\tH3K27ac\thm\tCancer'
 b'Homo sapiens\tZR75_CHIPSEQ_H3K27AC\tGSM1693026\tGSE69112\tZR-75-1\tEpithelium\tMammary Gland\tNone\tH3K27ac\thm\tCancer'
 b'Homo sapiens\tH3K27AC, ETOH, REP1, MCF7\tGSM1382472\tGSE57436\tMCF-7\tEpithelium\tMammary Gland\tAbcam, #961080\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC, ETOH, REP2, MCF7\tGSM1382473\tGSE57436\tMCF-7\tEpithelium\tMammary Gland\tAbcam, #961080\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC, E2, REP1, MCF7\tGSM1382482\tGSE57436\tMCF-7\tEpithelium\tMammary Gland\tAbcam, #961080\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC, E2, REP2, MCF7\tGSM1382483\tGSE57436\tMCF-7\tEpithelium\tMammary Gland\tAbcam, #961080\tH3K27ac\thm\tNone'
 b'Homo sapiens\tH3K27AC MCF7\tGSM1481570\tGSE60517\tMCF-7\tEpithelium\tMammary Gland\tH3K27ac (ab4729 abcam lot GR132150)\tH3K27ac\thm\tNone']

In [268]:
f_out['chr1'][:].shape


---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-268-08b7dd60e524> in <module>()
----> 1 f_out['chr1'][:].shape

_objects.pyx in h5py._objects.with_phil.wrapper()

_objects.pyx in h5py._objects.with_phil.wrapper()

~/miniconda3/envs/cenv3/lib/python3.6/site-packages/h5py-2.7.0-py3.6-macosx-10.7-x86_64.egg/h5py/_hl/group.py in __getitem__(self, name)
    167                 raise ValueError("Invalid HDF5 object reference")
    168         else:
--> 169             oid = h5o.open(self.id, self._e(name), lapl=self._lapl)
    170 
    171         otype = h5i.get_type(oid)

_objects.pyx in h5py._objects.with_phil.wrapper()

_objects.pyx in h5py._objects.with_phil.wrapper()

h5o.pyx in h5py.h5o.open()

ValueError: Not a location (Invalid object id)

In [243]:
print(chromsizes[:24])


[('chr1', 248956422), ('chr2', 242193529), ('chr3', 198295559), ('chr4', 190214555), ('chr5', 181538259), ('chr6', 170805979), ('chr7', 159345973), ('chr8', 145138636), ('chr9', 138394717), ('chr10', 133797422), ('chr11', 135086622), ('chr12', 133275309), ('chr13', 114364328), ('chr14', 107043718), ('chr15', 101991189), ('chr16', 90338345), ('chr17', 83257441), ('chr18', 80373285), ('chr19', 58617616), ('chr20', 64444167), ('chr21', 46709983), ('chr22', 50818468), ('chrX', 156040895), ('chrY', 57227415), ('chrM', 16569)]

In [278]:
%%time 

chromInfoFile = ('/Users/pete/projects/negspy/negspy/data/hg38/chromInfo.txt')
chromsizes = load_chromsizes(chromInfoFile)
out_file = '/tmp/hg38.multires'
f_out = h5py.File(out_file, 'r')

out_file = '/tmp/hg38.tiled.multires'

f_multi = create_multires(f_out, 
                    chromsizes[:24],
                    lambda x: x.T.reshape((x.shape[1],-1,2)).sum(axis=2).T,
                    tile_size=256,
                    starting_resolution=1000,
                    output_file=out_file)


array_data.shape (248957, 256)
array_data.shape (242194, 256)
array_data.shape (198296, 256)
array_data.shape (190215, 256)
array_data.shape (181539, 256)
array_data.shape (170806, 256)
array_data.shape (159346, 256)
array_data.shape (145139, 256)
array_data.shape (138395, 256)
array_data.shape (133798, 256)
array_data.shape (135087, 256)
array_data.shape (133276, 256)
array_data.shape (114365, 256)
array_data.shape (107044, 256)
array_data.shape (101992, 256)
array_data.shape (90339, 256)
array_data.shape (83258, 256)
array_data.shape (80374, 256)
array_data.shape (58618, 256)
array_data.shape (64445, 256)
array_data.shape (46710, 256)
array_data.shape (50819, 256)
array_data.shape (156041, 256)
array_data.shape (57228, 256)
max_zoom: 14
CPU times: user 3.54 s, sys: 17.4 s, total: 21 s
Wall time: 35.9 s

In [279]:
f_multi.keys()
f_multi.close()

In [117]:
# the largest tile (zoom level 0, position 0) contains a downsampled
# version of the entire dataset
d = get_tile(f, [0,0])
plt.plot(d)


Out[117]:
[<matplotlib.lines.Line2D at 0x110b90668>]

In [118]:
# going to the first tile of the next zoom level
# we're showing less data
d = get_tile(f, [1,0])
plt.plot(d)


---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-118-760791226604> in <module>()
      1 # going to the first tile of the next zoom level
      2 # we're showing less data
----> 3 d = get_tile(f, [1,0])
      4 plt.plot(d)

<ipython-input-116-13e670c90b94> in get_tile(f, tile_pos)
     19 
     20     # which resolution does this zoom level correspond to?
---> 21     resolution = tileset_info['resolutions'][tile_pos[0]]
     22     tile_size = tileset_info['tile_size']
     23 

IndexError: list index out of range

In [119]:
# the second tile of zoom_level 1 contains the
# data to the "right" of the first tile
d = get_tile(f, [1,1])
plt.plot(d)


---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-119-84d6e328d6e1> in <module>()
      1 # the second tile of zoom_level 1 contains the
      2 # data to the "right" of the first tile
----> 3 d = get_tile(f, [1,1])
      4 plt.plot(d)

<ipython-input-116-13e670c90b94> in get_tile(f, tile_pos)
     19 
     20     # which resolution does this zoom level correspond to?
---> 21     resolution = tileset_info['resolutions'][tile_pos[0]]
     22     tile_size = tileset_info['tile_size']
     23 

IndexError: list index out of range

Example with n x c data


In [120]:
## create some input data
import h5py 
import math
import os
import os.path as op
import numpy as np

import matplotlib.pyplot as plt
import scipy.stats as ss

array_length = 4000
array_width = 5

xs = range(array_length)
array_data = np.array([i * np.array(range(array_length))
              for i in range(1,array_width+1)]).T
plt.plot(xs, array_data[:,0])


Out[120]:
[<matplotlib.lines.Line2D at 0x110c84860>]

In [121]:
array_data


Out[121]:
array([[    0,     0,     0,     0,     0],
       [    1,     2,     3,     4,     5],
       [    2,     4,     6,     8,    10],
       ..., 
       [ 3997,  7994, 11991, 15988, 19985],
       [ 3998,  7996, 11994, 15992, 19990],
       [ 3999,  7998, 11997, 15996, 19995]])

In [122]:
array_data.T.reshape((array_data.shape[1],-1,2)).sum(axis=2).T


Out[122]:
array([[    1,     2,     3,     4,     5],
       [    5,    10,    15,    20,    25],
       [    9,    18,    27,    36,    45],
       ..., 
       [ 7989, 15978, 23967, 31956, 39945],
       [ 7993, 15986, 23979, 31972, 39965],
       [ 7997, 15994, 23991, 31988, 39985]])

In [123]:
f = create_multires(np.array(array_data), 
                    array_length,
                    lambda x: x.T.reshape((x.shape[1],-1,2)).sum(axis=2).T)


max_zoom: 2
zoom_level: 1 resolution: 2 new_data length 2000
zoom_level: 0 resolution: 4 new_data length 1000

In [124]:
print(get_tileset_info(f))


{'resolutions': [4, 2, 1], 'min_pos': [0], 'tile_size': 1024}

In [125]:
get_tile(f, [0,0])


Out[125]:
array([[  6.00000000e+00,   1.20000000e+01,   1.80000000e+01,
          2.40000000e+01,   3.00000000e+01],
       [  2.20000000e+01,   4.40000000e+01,   6.60000000e+01,
          8.80000000e+01,   1.10000000e+02],
       [  3.80000000e+01,   7.60000000e+01,   1.14000000e+02,
          1.52000000e+02,   1.90000000e+02],
       ..., 
       [  1.59580000e+04,   3.19160000e+04,   4.78740000e+04,
          6.38320000e+04,   7.97900000e+04],
       [  1.59740000e+04,   3.19480000e+04,   4.79220000e+04,
          6.38960000e+04,   7.98700000e+04],
       [  1.59900000e+04,   3.19800000e+04,   4.79700000e+04,
          6.39600000e+04,   7.99500000e+04]], dtype=float32)

Adding chromosome info to the resulting file


In [127]:
#filename = '/tmp/my_file.multires'
#filename = '/Users/pete/projects/higlass-server/media/uploads/my_file_genome_wide_hg38.multires'
#chromInfoFile = ('/Users/pete/projects/negspy/negspy/data/hg38/chromInfo.txt')

In [128]:
print('chromsizes', chromsizes[:10])


chromsizes [('chr1', 248956422), ('chr2', 242193529), ('chr3', 198295559), ('chr4', 190214555), ('chr5', 181538259), ('chr6', 170805979), ('chr7', 159345973), ('chr8', 145138636), ('chr9', 138394717), ('chr10', 133797422)]

In [2]:
import h5py
f = h5py.File('/tmp/blah.h5', 'w')
f.create_group('chr1')


Out[2]:
<HDF5 group "/chr1" (0 members)>

In [ ]: